//express的使用-开启服务器

//1.安装 express  : npm i express -S 保存生产依赖

//2.引入模块
let express = require("express"); //绝对路径
const { response } = require("express");
var bodyParser = require("body-parser"); //记得先安装 npm i body-parser -S

// 创建 application/x-www-form-urlencoded 编码解析
var urlencodedParser = bodyParser.urlencoded({ extended: false }); //前端传过来的数据: name=马源123&age=18 通过urlencodedParser中间件加工数据：{name:'马源'}

//3.使用模块
let app = express(); //实例化过程
//index:设置默认访问的页面；maxAge设置缓存时间，在5秒内都不响应，让前端去访问缓存。
// app.use(express.static("./",{index:'main.html',maxAge:5000})); //利用express的static方法开启静态资源服务器
app.use(express.static("./")); //利用express的static方法开启静态资源服务器

// app.use(express.urlencoded()); //处理name=马源123&age=18
// app.use(express.json()); //处理json数据  '{name:王祖贤,age:18}'
/*
  用户管理：
    * 验证用户名是否存在 ：get
    * 注册 : post
    * 登录 : get
    * 退出 : delete
    * 删除用户 : delete
    * 查询用户列表 :get
    * 修改用户信息 :put
*/

let userinf = [
  {
    uid: 1,
    name: "梁乐怡",
  },
  {
    uid: 2,
    name: "马源",
  },
  {
    uid: 3,
    name: "志远",
  },
];

app.use(urlencodedParser); //使用urlencodedParser，获取body数据
app.use(bodyParser.json());

//验证用户名是否存在
app.get("/user/checkname", (req, res) => {
  // console.log(req, 888);
  // console.log(req.query, 999);
  let { name } = req.query;
  // console.log(name);
  let result = userinf.filter((item) => item.name == name).length; //找到名字相同,返回数组
  let data = {};
  if (result) {
    //非0数字都是真。 细节： 0 假； '0' 真； '' 假
    //找到：不给注册
    data = {
      code: 0,
      message: "该用户已存在，不能注册",
    };
  } else {
    //没有找到：允许注册
    data = {
      code: 1,
      message: "允许注册",
    };
  }
  // res.send("666");
  res.send(data);
});

//注册
app.post("/user/reg", (req, res) => {
  console.log(req.body); //获取到这个数据需要安装一个中间件 body-parser
  let { name } = req.body; //解构
  let newUser = {
    uid: userinf.length + 1,
    name, //赋值
  };
  userinf.push(newUser);
  let data = {
    code: 1,
    message: "注册成功",
    data: userinf,
  };
  // res.send("注册成功");
  res.send(data);
});

//修改用户信息 :put 方式一:用body传参
// app.put("/user/edit", (req, res) => {
//   let { uid, name } = req.body;
//   console.log(uid, name);
//   userinf.forEach((item) => {
//     if (item.uid == uid) {
//       item.name = name;
//     }
//   });
//   // res.send("修改成功");
//   res.send(userinf);
// });

//修改用户信息 :put 方式2：动态路由传uid
app.put("/user/edit/:uid/:name", (req, res) => {
  console.log(req.params);
  res.send("修改成功");
  // res.send(userinf);
});

//删除用户 : delete
app.delete("/user/del/:uid", (req, res) => {
  let { uid } = req.params;
  userinf = userinf.filter((item) => item.uid != uid);
  res.send(userinf);
});

//4.开启服务器：端口 1000-60000

app.listen(2004, () => {
  console.log("服务器已开启，请访问:http://localhost:2004");
});
